import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# Docker & Docker Compose

## Docker

### 安装介绍

Docker 镜像托管在 DockerHub：https://hub.docker.com/r/zhaojun1998/zfile, 如果你的网络环境访问 docker hub 不方便，还可以使用镜像：

- 香港：swr.ap-southeast-1.myhuaweicloud.com/zfile-dev/zfile:latest
- 北京: swr.cn-north-1.myhuaweicloud.com/zfile-dev/zfile:latest

:::tip 配置说明

下方高亮部分，可自定义端口和数据目录：

- 端口号：第 2 行**冒号**左侧的 `8080` 表示对外暴露的端口号，如其他程序占用，则请修改为其他端口号。
- 数据目录：第 5 行的 `-v /root/zfile/file:/data/file \` 为映射宿主机文件夹 `/root/zfile/file` 到容器内的 `/data/file` 文件夹，这样需要在 ZFile 添加本地存储时，填写容器内目录 `/data/file` 就等同于访问宿主机的 `/root/zfile/file` 目录了。 这一行按照自己的需求修改，如果不需要映射本地存储，则可以删除这一行。
    - 如果是 Windows，冒号左边可以带盘符，如 `D:/zfile/file:/data/file`。

:::

<Tabs>
<TabItem value="dockerhub" label="DockerHub">

```bash showLineNumbers {2,5}
docker run -d --name=zfile --restart=always \
    -p 8080:8080 \
    -v /root/zfile/db:/root/.zfile-v4/db \
    -v /root/zfile/logs:/root/.zfile-v4/logs \
    -v /root/zfile/file:/data/file \
    zhaojun1998/zfile:latest
```

</TabItem>
<TabItem value="swr-bj" label="北京镜像">

```bash showLineNumbers {2,5}
docker run -d --name=zfile --restart=always \
    -p 8080:8080 \
    -v /root/zfile/db:/root/.zfile-v4/db \
    -v /root/zfile/logs:/root/.zfile-v4/logs \
    -v /root/zfile/file:/data/file \
    swr.cn-north-1.myhuaweicloud.com/zfile-dev/zfile:latest
```

</TabItem>
<TabItem value="swr-hk" label="香港镜像">

```bash showLineNumbers {2,5}
docker run -d --name=zfile --restart=always \
    -p 8080:8080 \
    -v /root/zfile/db:/root/.zfile-v4/db \
    -v /root/zfile/logs:/root/.zfile-v4/logs \
    -v /root/zfile/file:/data/file \
    swr.ap-southeast-1.myhuaweicloud.com/zfile-dev/zfile:latest
```

</TabItem>
</Tabs>


### 配置文件映射 {#config}

**如需映射配置文件**则需要先在宿主机下载配置文件，然后映射到容器内:
下载 [`application.properties`](https://c.jun6.net/ZFILE/application.properties) 文件到 `/root` 目录下, 此目录可自行更改, 命令如:

```bash showLineNumbers
curl -k -o /root/application.properties https://c.jun6.net/ZFILE/application.properties
```

**然后增加一个 `-v` 参数(见下面倒数第二行)，将此源文件映射到容器内（如修改宿主机的 `application.properties` 为其他路径, 则下面命令也要一起修改）, 如:**

> 提示: 启动容器后无法修改文件映射，需先 `docker rm -f zfile` 删除容器，再重新运行命令.


<Tabs>
    <TabItem value="dockerhub" label="DockerHub">
```bash showLineNumbers {6}
docker run -d --name=zfile --restart=always \
    -p 8080:8080 \
    -v /root/zfile/db:/root/.zfile-v4/db \
    -v /root/zfile/logs:/root/.zfile-v4/logs \
    -v /root/zfile/file:/data/file \
    -v /root/application.properties:/root/application.properties \
    zhaojun1998/zfile:latest
```
    </TabItem>

    <TabItem value="swr-bj" label="北京镜像">
        ```bash showLineNumbers {6}
        docker run -d --name=zfile --restart=always \
            -p 8080:8080 \
            -v /root/zfile/db:/root/.zfile-v4/db \
            -v /root/zfile/logs:/root/.zfile-v4/logs \
            -v /root/zfile/file:/data/file \
            -v /root/application.properties:/root/application.properties \
            swr.cn-north-1.myhuaweicloud.com/zfile-dev/zfile:latest
        ```
    </TabItem>

    <TabItem value="swr-hk" label="香港镜像">
        ```bash showLineNumbers {6}
        docker run -d --name=zfile --restart=always \
            -p 8080:8080 \
            -v /root/zfile/db:/root/.zfile-v4/db \
            -v /root/zfile/logs:/root/.zfile-v4/logs \
            -v /root/zfile/file:/data/file \
            -v /root/application.properties:/root/application.properties \
            swr.ap-southeast-1.myhuaweicloud.com/zfile-dev/zfile:latest
        ```
    </TabItem>
</Tabs>

---

## Docker Compose

### 安装介绍

:::tip 配置说明

下方高亮部分，可自定义端口和数据目录：

- 端口号：第 7 行**冒号**左侧的 `8080` 表示对外暴露的端口号，如其他程序占用，则请修改为其他端口号。
- 数据目录：第 11 行的 `- '/root/zfile/file:/data/file'` 为映射宿主机文件夹 `/root/zfile/file` 到容器内的 `/data/file` 文件夹，这样需要在 ZFile 添加本地存储时，填写容器内目录 `/data/file` 就等同于访问宿主机的 `/root/zfile/file` 目录了。 这一行按照自己的需求修改，如果不需要映射本地存储，则可以删除这一行。

:::

<Tabs>
    <TabItem value="dockerhub" label="DockerHub">
```yml showLineNumbers {7,11}
version: '3.3'
services:
    zfile:
        container_name: zfile
        restart: always
        ports:
            - '8080:8080'
        volumes:
            - '/root/zfile/db:/root/.zfile-v4/db'
            - '/root/zfile/logs:/root/.zfile-v4/logs'
            - '/root/zfile/file:/data/file'
        image: zhaojun1998/zfile:latest
```
    </TabItem>

    <TabItem value="swr-bj" label="北京镜像">
```yml showLineNumbers {7,11}
version: '3.3'
services:
    zfile:
        container_name: zfile
        restart: always
        ports:
            - '8080:8080'
        volumes:
            - '/root/zfile/db:/root/.zfile-v4/db'
            - '/root/zfile/logs:/root/.zfile-v4/logs'
            - '/root/zfile/file:/data/file'
        image: swr.cn-north-1.myhuaweicloud.com/zfile-dev/zfile:latest
```
    </TabItem>


    <TabItem value="swr-hk" label="香港镜像">
```yml showLineNumbers {7,11}
version: '3.3'
services:
    zfile:
        container_name: zfile
        restart: always
        ports:
            - '8080:8080'
        volumes:
            - '/root/zfile/db:/root/.zfile-v4/db'
            - '/root/zfile/logs:/root/.zfile-v4/logs'
            - '/root/zfile/file:/data/file'
        image: swr.ap-southeast-1.myhuaweicloud.com/zfile-dev/zfile:latest
```
    </TabItem>

</Tabs>

### 配置文件映射 {#config2}


**如需映射配置文件**则需要先在宿主机下载配置文件，然后映射到容器内:
下载 [`application.properties`](https://c.jun6.net/ZFILE/application.properties) 文件到 `/root` 目录下, 此目录可自行更改, 命令如:

```bash showLineNumbers
curl -k -o /root/application.properties https://c.jun6.net/ZFILE/application.properties
```

**然后增加一个 `-v` 参数(见下面倒数第二行)，将此源文件映射到容器内（如修改宿主机的 `application.properties` 为其他路径, 则下面命令也要一起修改）, 如:**

> 提示: 启动容器后无法修改文件映射，需先 `docker rm -f zfile` 删除容器，再重新运行命令.

<Tabs>
    <TabItem value="dockerhub" label="DockerHub">
```yml showLineNumbers {12}
version: '3.3'
services:
    zfile:
        container_name: zfile
        restart: always
        ports:
            - '8080:8080'
        volumes:
            - '/root/zfile/db:/root/.zfile-v4/db'
            - '/root/zfile/logs:/root/.zfile-v4/logs'
            - '/root/zfile/file:/data/file'
            - '/root/application.properties:/root/application.properties'
        image: zhaojun1998/zfile:latest
```
    </TabItem>
    <TabItem value="swr-bj" label="北京镜像">
```yml showLineNumbers {12}
version: '3.3'
services:
    zfile:
        container_name: zfile
        restart: always
        ports:
            - '8080:8080'
        volumes:
            - '/root/zfile/db:/root/.zfile-v4/db'
            - '/root/zfile/logs:/root/.zfile-v4/logs'
            - '/root/zfile/file:/data/file'
            - '/root/application.properties:/root/application.properties'
        image: swr.cn-north-1.myhuaweicloud.com/zfile-dev/zfile:latest
```
    </TabItem>
    <TabItem value="swr-hk" label="香港镜像">
```yml showLineNumbers {12}
version: '3.3'
services:
    zfile:
        container_name: zfile
        restart: always
        ports:
            - '8080:8080'
        volumes:
            - '/root/zfile/db:/root/.zfile-v4/db'
            - '/root/zfile/logs:/root/.zfile-v4/logs'
            - '/root/zfile/file:/data/file'
            - '/root/application.properties:/root/application.properties'
        image: swr.ap-southeast-1.myhuaweicloud.com/zfile-dev/zfile:latest
```
    </TabItem>
</Tabs>



-----

## 更新版本

### 手动更新

> 单次手动更新名称为 `zfile` 的容器

```bash showLineNumbers
docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup \
    --run-once \
    zfile
```

### 自动更新

> 每 3600 秒 （1小时）自动检测更新名称为 `zfile` 的容器

```bash showLineNumbers
docker run -d \
    --name watchtower \
    --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    --cleanup \
    zfile \
    -i 3600
```

## 帮我安装🔍
[技术支持](/support/)
